Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


LXMF/LXMF.py 0d76eee6cd25dafd3b0f7e15d28b346cea7d97e5 (0d76eee6) Text, 4.55 KB

Te6edf3APP_NAME Tff7b72= Ta5d6ff"Ta5d6fflxmfTa5d6ff"

T8b949e##########################################################
T8b949e# The following core fields are provided to facilitate #
T8b949e# interoperability in data exchange between various LXMF #
T8b949e# clients and systems. #
T8b949e##########################################################
Te6edf3FIELD_EMBEDDED_LXMS Tff7b72= T79c0ff0x01
Te6edf3FIELD_TELEMETRY Tff7b72= T79c0ff0x02
Te6edf3FIELD_TELEMETRY_STREAM Tff7b72= T79c0ff0x03
Te6edf3FIELD_ICON_APPEARANCE Tff7b72= T79c0ff0x04
Te6edf3FIELD_FILE_ATTACHMENTS Tff7b72= T79c0ff0x05
Te6edf3FIELD_IMAGE Tff7b72= T79c0ff0x06
Te6edf3FIELD_AUDIO Tff7b72= T79c0ff0x07
Te6edf3FIELD_THREAD Tff7b72= T79c0ff0x08
Te6edf3FIELD_COMMANDS Tff7b72= T79c0ff0x09
Te6edf3FIELD_RESULTS Tff7b72= T79c0ff0x0A
Te6edf3FIELD_GROUP Tff7b72= T79c0ff0x0B
Te6edf3FIELD_TICKET Tff7b72= T79c0ff0x0C

T8b949e# For usecases such as including custom data structures,
T8b949e# embedding or encapsulating other data types or protocols
T8b949e# that are not native to LXMF, or bridging/tunneling
T8b949e# external protocols or services over LXMF, the following
T8b949e# fields are available. A format/type/protocol (or other)
T8b949e# identifier can be included in the CUSTOM_TYPE field, and
T8b949e# the embedded payload can be included in the CUSTOM_DATA
T8b949e# field. It is up to the client application to correctly
T8b949e# discern and potentially utilise any data embedded using
T8b949e# this mechanism.
Te6edf3FIELD_CUSTOM_TYPE Tff7b72= T79c0ff0xFB
Te6edf3FIELD_CUSTOM_DATA Tff7b72= T79c0ff0xFC
Te6edf3FIELD_CUSTOM_META Tff7b72= T79c0ff0xFD

T8b949e# The non-specific and debug fields are intended for
T8b949e# development, testing and debugging use.
Te6edf3FIELD_NON_SPECIFIC Tff7b72= T79c0ff0xFE
Te6edf3FIELD_DEBUG Tff7b72= T79c0ff0xFF

T8b949e##########################################################
T8b949e# The following section lists field-specific specifiers, #
T8b949e# modes and identifiers that are native to LXMF. It is #
T8b949e# optional for any client or system to support any of #
T8b949e# these, and they are provided as template for easing #
T8b949e# interoperability without sacrificing expandability #
T8b949e# and flexibility of the format. #
T8b949e##########################################################

T8b949e# Audio modes for the data structure in FIELD_AUDIO

T8b949e# Codec2 Audio Modes
Te6edf3AM_CODEC2_450PWB Tff7b72= T79c0ff0x01
Te6edf3AM_CODEC2_450 Tff7b72= T79c0ff0x02
Te6edf3AM_CODEC2_700C Tff7b72= T79c0ff0x03
Te6edf3AM_CODEC2_1200 Tff7b72= T79c0ff0x04
Te6edf3AM_CODEC2_1300 Tff7b72= T79c0ff0x05
Te6edf3AM_CODEC2_1400 Tff7b72= T79c0ff0x06
Te6edf3AM_CODEC2_1600 Tff7b72= T79c0ff0x07
Te6edf3AM_CODEC2_2400 Tff7b72= T79c0ff0x08
Te6edf3AM_CODEC2_3200 Tff7b72= T79c0ff0x09

T8b949e# Opus Audio Modes
Te6edf3AM_OPUS_OGG Tff7b72= T79c0ff0x10
Te6edf3AM_OPUS_LBW Tff7b72= T79c0ff0x11
Te6edf3AM_OPUS_MBW Tff7b72= T79c0ff0x12
Te6edf3AM_OPUS_PTT Tff7b72= T79c0ff0x13
Te6edf3AM_OPUS_RT_HDX Tff7b72= T79c0ff0x14
Te6edf3AM_OPUS_RT_FDX Tff7b72= T79c0ff0x15
Te6edf3AM_OPUS_STANDARD Tff7b72= T79c0ff0x16
Te6edf3AM_OPUS_HQ Tff7b72= T79c0ff0x17
Te6edf3AM_OPUS_BROADCAST Tff7b72= T79c0ff0x18
Te6edf3AM_OPUS_LOSSLESS Tff7b72= T79c0ff0x19

T8b949e# Custom, unspecified audio mode, the client must
T8b949e# determine it itself based on the included data.
Te6edf3AM_CUSTOM Tff7b72= T79c0ff0xFF


T8b949e##########################################################
T8b949e# The following helper functions makes it easier to #
T8b949e# handle and operate on LXMF data in client programs #
T8b949e##########################################################

Tff7b72import T7ee787RNST7ee787.T7ee787vendorT7ee787.T7ee787umsgpack Tff7b72as T7ee787msgpack
Tff7b72def Td2a8ffdisplay_name_from_app_dataTb4b4b4(Te6edf3app_dataTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3app_data Tff7b72== Tff7b72NoneTb4b4b4:
Tff7b72return Tff7b72None
Tff7b72elif Tffa657lenTb4b4b4(Te6edf3app_dataTb4b4b4) Tff7b72== T79c0ff0Tb4b4b4:
Tff7b72return Tff7b72None
Tff7b72elseTb4b4b4:
T8b949e# Version 0.5.0+ announce format
Tff7b72if Tb4b4b4(Te6edf3app_dataTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72>Tff7b72= T79c0ff0x90 Tff7b72and Te6edf3app_dataTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72<Tff7b72= T79c0ff0x9fTb4b4b4) Tff7b72or Te6edf3app_dataTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72== T79c0ff0xdcTb4b4b4:
Te6edf3peer_data Tff7b72= Te6edf3msgpackTff7b72.Td2a8ffunpackbTb4b4b4(Te6edf3app_dataTb4b4b4)
Tff7b72if Tffa657typeTb4b4b4(Te6edf3peer_dataTb4b4b4) Tff7b72== Tffa657listTb4b4b4:
Tff7b72if Tffa657lenTb4b4b4(Te6edf3peer_dataTb4b4b4) Tff7b72< T79c0ff1Tb4b4b4:
Tff7b72return Tff7b72None
Tff7b72elseTb4b4b4:
Te6edf3dn Tff7b72= Te6edf3peer_dataTb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72if Te6edf3dn Tff7b72== Tff7b72NoneTb4b4b4:
Tff7b72return Tff7b72None
Tff7b72elseTb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3decoded Tff7b72= Te6edf3dnTff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)
Tff7b72return Te6edf3decoded
Tff7b72exceptTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffCould not decode display name in included announce data. The contained exception was: Tffd700{e}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)
Tff7b72return Tff7b72None

T8b949e# Original announce format
Tff7b72elseTb4b4b4:
Tff7b72return Te6edf3app_dataTff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)

Tff7b72def Td2a8ffstamp_cost_from_app_dataTb4b4b4(Te6edf3app_dataTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3app_data Tff7b72== Tff7b72NoneTb4b4b4:
Tff7b72return Tff7b72None
Tff7b72elseTb4b4b4:
T8b949e# Version 0.5.0+ announce format
Tff7b72if Tb4b4b4(Te6edf3app_dataTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72>Tff7b72= T79c0ff0x90 Tff7b72and Te6edf3app_dataTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72<Tff7b72= T79c0ff0x9fTb4b4b4) Tff7b72or Te6edf3app_dataTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72== T79c0ff0xdcTb4b4b4:
Te6edf3peer_data Tff7b72= Te6edf3msgpackTff7b72.Td2a8ffunpackbTb4b4b4(Te6edf3app_dataTb4b4b4)
Tff7b72if Tffa657typeTb4b4b4(Te6edf3peer_dataTb4b4b4) Tff7b72== Tffa657listTb4b4b4:
Tff7b72if Tffa657lenTb4b4b4(Te6edf3peer_dataTb4b4b4) Tff7b72< T79c0ff2Tb4b4b4:
Tff7b72return Tff7b72None
Tff7b72elseTb4b4b4:
Tff7b72return Te6edf3peer_dataTb4b4b4[T79c0ff1Tb4b4b4]

T8b949e# Original announce format
Tff7b72elseTb4b4b4:
Tff7b72return Tff7b72None


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────